package com.yuw.tcpsocket;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerThread extends Thread {

	// 服务器ServerSocket
	// 注意：服务器ServerSocket监听的端口要和客户端的端口号一致，否则无法建立来接
	private ServerSocket ssocket ;
	@Override
	public void run() {
		try {
			// 初始化服务器 的 ServerSocket
			ssocket = new ServerSocket(8899);
			
			while(true) {
				// 使用服务器的ServerSocket创建一个用于和客户端建立连接的socket对象
				Socket socket = ssocket.accept();
				//////////接收消息/////////////
				// 与客户端建立连接
				BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "utf-8"));
				// 读入客户端发送的消息
				String strIn = br.readLine();
				System.out.println("你好，我是服务器，接收到你的消息："+strIn);
				
				//////////发送消息/////////////
				
				// 获取socket的输出流对象
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "utf-8"));
				// 输出内容到网路，发送给客户端端
				String strMsgSend = "hello客户端，我是服务器端！";
				bw.write(strMsgSend);
				// 输出信息
				System.out.println(strMsgSend);
				// 一般输出流将换行或者是回车作为一行内容的结束，所以需要在发送之前输出一个换行符或者回车符表示一行内容结束，然后输出流将其发送到网络给服务器
				//bw.newLine();
				bw.write("\n");
				// 清空
				bw.flush();
			}
			// 
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}
